`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/03/12 09:55:07
// Design Name: 
// Module Name: rgmii_gmii_handle
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module rgmii_gmii_handle(
    // 顶层模块输入
    input           rgmii_rx_clk    ,   // 接收来自PHY芯片的数据接收时钟
    input           rgmii_rx_ctl    ,   // 接收来自PHY芯片的接收数据控制信号
    input   [3:0]   rgmii_rx_data   ,   // 接收来自PHY芯片的数据
    input           gmii_tx_en      ,   // 接收来自APR模块的发送数据使能信号
    input   [7:0]   gmii_tx_data    ,   // 接收来自ARP模块的发送数据
    output          rgmii_tx_clk    ,   // 输出FPGA的发送数据时钟信号
    output          rgmii_tx_ctl    ,   // 输出FPGA的发送数据控制信号
    output  [3:0]   rgmii_tx_data   ,   // 输出FPGA的8bit gmii数据经过转换后的4bit rgmii的数据
    output          gmii_rx_clk     ,   // 输出给APR模块经过转换后的gmii接受数据时钟信号
    output          gmii_rx_en      ,   // 输出给ARP模块经过转换后的gmii接收数据有效信号
    output  [7:0]   gmii_rx_data        // 输出给ARP模块经过转换后的gmii接受数据

);
assign rgmii_tx_clk = rgmii_rx_clk;
// 用于接收数据并传给APR模块
rgmii_to_gmii u_rgmii_to_gmii(
    .rgmii_rx_clk       (rgmii_rx_clk   ),
    .rgmii_rx_data      (rgmii_rx_data  ),
    .rgmii_rx_ctl       (rgmii_rx_ctl   ),
    
    // output
    .gmii_rx_clk        (gmii_rx_clk    ),
    .gmii_rx_en         (gmii_rx_en     ),
    .gmii_rx_data       (gmii_rx_data   )
);

// 用于发送APR模块传来的数据
gmii_to_rgmii u_gmii_to_rgmii(
    .gmii_tx_clk        (gmii_tx_clk    ),
    .gmii_tx_en         (gmii_tx_en     ),
    .gmii_tx_data       (gmii_tx_data   ),
    .rgmii_tx_clk       (rgmii_tx_clk   ),
    .rgmii_tx_ctl       (rgmii_tx_ctl   ),
    .rgmii_tx_data      (rgmii_tx_data  )
);
endmodule
